// 入口文件


// 引入express
var express = require("express");
// 引入模板处理模块
var swig = require("swig");

//引入cookie模块
var Cookies = require("cookies");

//引入用户模块
var User =require("./models/users");
// 创建app应用，等同于node的http
var app = express();

/*设置静态文件托管
当用用户访问的"/public",则以express.static(__dirname+"/public")方式访问
 */

app.use("/public",express.static(__dirname+"/public"))

/*配置应用模板
*定义当前应用所使用的模板引擎
* 第一个参数为模板引擎的名称，同时也是模板文件的后缀
* 第二个参数表示用于处理模板内容的方法
 */

app.engine("html",swig.renderFile);

/*
设置模板文件的目录
第一个参数必须是“views”
第二个参数是路径
 */

app.set("views","./views");

/*
注册所使用的模板
第一个必须是"view engine"
第二个参数跟engien设置的必须一致
 */
app.set("view engine","html");

// 开发过程中需要清除模板的缓存,false取消，true为开启

//设置swig页面不缓存
swig.setDefaults({
    cache: false
})


//设置cookie
app.use((req,res,next) => {

    req.cookies=new Cookies(req,res);

    //解析登录用户的cookie信息
    req.userInfo={};
    if(req.cookies.get("userInfo")){
        req.userInfo=JSON.parse(req.cookies.get("userInfo"));
        User.findById(req.userInfo._id,function (err, userInfo) {
            if(err){
                next();
            }else {
                req.userInfo.isAdmin=Boolean(userInfo.isAdmin);
                next();
            }
        })
    }else{
        next();
    }
})

// 加载数据库模块
var mongoose = require("mongoose");

// 加载body-parser模块
var bodyParser = require("body-parser");



app.use(bodyParser.urlencoded({extended:true}));


// 业务代码

/*
*根据不同的功能划分模板http://localhost:27017/http://localhost:27017/
 */
app.use("/admin",require("./router/admin"));
app.use("/api",require("./router/api"));
app.use("/",require("./router/main"));


// 链接数据库
mongoose.connect("mongodb://localhost:27017/blog",(err) => {
    if(err){
        console.log("数据库连接失败")
    }else{
        console.log("数据路连接成功")
        app.listen(8081);
    }
});





// 首先由用户发送http请求》url》解析路由》匹配规则》执行指定绑定函数,返回到客户端